//
//  MQStatusCell.swift
//  MQWeibo
//
//  Created by 毛强 on 16/1/1.
//  Copyright © 2016年 itheima. All rights reserved.
//

import UIKit
import SnapKit

// cell 里面的间距
let MQStatusCellMargin: CGFloat = 8
// 头像的宽高
let MQStatusCellIconViewWH: CGFloat = 35

class MQStatusCell: UITableViewCell {
    
    // toolBar 的顶部约束
    var toolBarTopConstraint: Constraint?
    
    // 当前视图引用的视图模型(里面有模型数据)
    var statusViewModel: MQStatusViewModel? {
        didSet{
            // 设置数据
            statusOriginalView.statusViewModel = statusViewModel
            statusToolBar.statusViewModel = statusViewModel
            
            
            // 判断是否有转发微博，如果有，就显示转发微博的视图
            // 如果没有，隐藏转发微博的视图
            
            // 在更新约束之前，把之前添加好的约束给 uninstall
            self.toolBarTopConstraint?.uninstall()
            
            if statusViewModel?.status?.retweeted_status != nil {
                // 有转发微博
                statusRetweetView.hidden = false
                statusRetweetView.statusViewModel = statusViewModel
                // 如果有转发微博， 底部 toolBar 的 top 是依靠于转发微博视图的底部来约束的
                // 如果更新约束是在三个控件之前，必须选把之前对应的约束给卸载掉，再添加约束
                statusToolBar.snp_updateConstraints { (make) -> Void in
                    self.toolBarTopConstraint = make.top.equalTo(statusRetweetView.snp_bottom).constraint
                }
            }else{
                // 没有转发微博
                statusRetweetView.hidden = true
                // 如果没有，底部 toolBar 的 top 是依靠于原创微博视图的底部来约束的
                statusToolBar.snp_updateConstraints { (make) -> Void in
                    self.toolBarTopConstraint = make.top.equalTo(statusOriginalView.snp_bottom).constraint
                }
            }
            
            statusRetweetView.statusViewModel = statusViewModel
        }
    }
    
    override init(style: UITableViewCellStyle, reuseIdentifier: String?) {
        super.init(style: style, reuseIdentifier: reuseIdentifier)
        selectionStyle = .None
        setupUI()
    }
    
    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
    
    private func setupUI(){
        
        // 添加视图
        contentView.addSubview(statusOriginalView)
        contentView.addSubview(statusRetweetView)
        contentView.addSubview(statusToolBar)
        
        // 添加约束
        statusOriginalView.snp_makeConstraints { (make) -> Void in
            make.leading.equalTo(contentView)
            make.top.equalTo(contentView).offset(MQStatusCellMargin)
            make.trailing.equalTo(contentView)
        }
        
        statusRetweetView.snp_makeConstraints { (make) -> Void in
            make.leading.equalTo(statusOriginalView)
            make.trailing.equalTo(statusOriginalView)
            make.top.equalTo(statusOriginalView.snp_bottom)
        }
        
        statusToolBar.snp_makeConstraints { (make) -> Void in
            make.leading.equalTo(contentView)
            make.trailing.equalTo(contentView)
            self.toolBarTopConstraint = make.top.equalTo(statusRetweetView.snp_bottom).constraint
            make.height.equalTo(35)
        }
        
        // 非常重要
        contentView.snp_makeConstraints { (make) -> Void in
            // 决定 cell 的高度
            make.bottom.equalTo(statusToolBar.snp_bottom)
            make.leading.equalTo(self)
            make.top.equalTo(self)
            make.trailing.equalTo(self)
        }
    }
    
    // MARK: - 懒加载控件
    // 原创微博
    private lazy var statusOriginalView: MQStatusOriginalView = MQStatusOriginalView()
    // toolBar
    private lazy var statusToolBar: MQStatusToolBar = MQStatusToolBar()
    // 转发微博
    private lazy var statusRetweetView: MQStatusRetweetView = MQStatusRetweetView()
}
